package api

import (
	"github.com/labstack/echo/v4"
	"longmen/server/pkg/common/helper/const"
	"longmen/server/pkg/common/helper/util"
	"longmen/server/pkg/grpc_client"
	pb "longmen/server/pkg/protobuf"
)

// @Summary 直播商城商品
// @Description 直播商城商品
// @Accept  json
// @Produce  json
// @Tags Live
// @Param   sendBody body protobuf.LiveStoreReq true "body"
// @Success 200 object  protobuf.LiveStoreResp "result"
// @Router /api/live/store [POST]
func (base *Controller) LiveStore(c echo.Context) error {
	r := &pb.LiveStoreReq{}
	if err := util.Json2Struct(c.Get("body").(string), r); err != nil {
		return util.BadParam(c, err)
	}
	ctx, cancel := base.GrpcWithTimeout()
	defer cancel()
	resp, err := grpc_client.GrpcLiveServer.LiveStore(ctx, r)
	if err != nil {
		return util.BuildFail(c, _const.RPC_FAILED, err.Error(), err)
	}
	return util.BuildSuccess(c, resp, "")
}

// @Summary 直播商城下单
// @Description 直播商城下单
// @Accept  json
// @Produce  json
// @Tags Live
// @Param   sendBody body protobuf.LiveStoreOrderReq true "body"
// @Success 200 object  protobuf.LiveStoreOrderResp "result"
// @Router /api/live/store_order [POST]
func (base *Controller) LiveStoreOrder(c echo.Context) error {
	r := &pb.LiveStoreOrderReq{}
	if err := util.Json2Struct(c.Get("body").(string), r); err != nil {
		return util.BadParam(c, err)
	}
	ctx, cancel := base.GrpcWithTimeout()
	defer cancel()
	resp, err := grpc_client.GrpcLiveServer.LiveStoreOrder(ctx, r)
	if err != nil {
		return util.BuildFail(c, _const.RPC_FAILED, err.Error(), err)
	}
	return util.BuildSuccess(c, resp, "")
}

// @Summary 直播商城我的订单
// @Description 直播商城我的订单
// @Accept  json
// @Produce  json
// @Tags Live
// @Param   sendBody body protobuf.LiveStoreOrderListReq true "body"
// @Success 200 object  protobuf.LiveStoreOrderListResp "result"
// @Router /api/live/store_order_list [POST]
func (base *Controller) LiveStoreOrderList(c echo.Context) error {
	r := &pb.LiveStoreOrderListReq{}
	if err := util.Json2Struct(c.Get("body").(string), r); err != nil {
		return util.BadParam(c, err)
	}
	ctx, cancel := base.GrpcWithTimeout()
	defer cancel()
	resp, err := grpc_client.GrpcLiveServer.LiveStoreOrderList(ctx, r)
	if err != nil {
		return util.BuildFail(c, _const.RPC_FAILED, err.Error(), err)
	}
	return util.BuildSuccess(c, resp, "")
}
